import { createRouter, createWebHistory } from 'vue-router'
import LoginView from '../views/LoginView.vue'

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'login',
      component: LoginView
    },
    {
      path: '/user',
      name: 'user',
      component: () => import('../views/UserView.vue'),
      meta: { requiresAuth: true, role: 'user' }
    },
    {
      path: '/customer-service',
      name: 'customerService',
      component: () => import('../views/CustomerServiceView.vue'),
      meta: { requiresAuth: true, role: 'customerService' }
    }
  ]
})

// 全局前置守卫
router.beforeEach((to, from, next) => {
  // 检查用户是否已登录
  const isLoggedIn = localStorage.getItem('user') !== null
  
  // 如果路由需要认证
  if (to.matched.some(record => record.meta.requiresAuth)) {
    if (!isLoggedIn) {
      // 未登录，重定向到登录页
      next({ name: 'login' })
    } else {
      // 已登录，检查角色权限
      const user = JSON.parse(localStorage.getItem('user'))
      const role = to.meta.role
      
      // 如果路由需要特定角色，检查用户是否有该角色
      if (role) {
        const isCustomerService = user.roles && user.roles.some(r => r.nameEn !== 'ROLE_VISITOR')
        
        if (role === 'customerService' && !isCustomerService) {
          // 用户不是客服，但尝试访问客服页面
          next({ name: 'user' })
        } else if (role === 'user' && isCustomerService) {
          // 用户是客服，但尝试访问普通用户页面
          next({ name: 'customerService' })
        } else {
          // 角色匹配，允许访问
          next()
        }
      } else {
        // 不需要特定角色，允许访问
        next()
      }
    }
  } else {
    // 不需要认证的路由，直接访问
    // 如果用户已登录且是客服，尝试访问登录页时，重定向到客服页面
    if (isLoggedIn && to.name === 'login') {
      const user = JSON.parse(localStorage.getItem('user'))
      const isCustomerService = user.roles && user.roles.some(r => r.nameEn !== 'ROLE_VISITOR')
      
      if (isCustomerService) {
        next({ name: 'customerService' })
        return
      }
    }
    next()
  }
})

export default router